TreeViewCol: Fix SEGV on remove/add, + memory leak
authorDaniel Boles <dboles@src.gnome.org>
Fri, 6 Oct 2017 19:24:49 +0000 (20:24 +0100)
committerDaniel Boles <dboles.src@gmail.com>
Fri, 6 Oct 2017 23:46:37 +0000 (00:46 +0100)
Nulling priv->button in _unset_tree_view() is asymmetrical: we create
it via init(), not _set_tree_view(), so we shouldn’t null in the latter.

Worse, doing so manifests in criticals + a SEGV easily with basic use of
testtreecolumns, removing the TVC from a TV then trying to add it to one

Finally, the wrong null-out meant dispose() failed to unref the button,
so it leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=728452
https://bugzilla.gnome.org/show_bug.cgi?id=788614

gtk/gtktreeviewcolumn.c

index 9dd368ab8ee0f467210af3f21c99eb3638426dc8..34a603234afd0df08922e08620e20896ee101802 100644 (file)
@@ -1350,7 +1350,6 @@ _gtk_tree_view_column_unset_tree_view (GtkTreeViewColumn *column)
     }
 
   priv->tree_view = NULL;
-  priv->button = NULL;
 }
 
 gboolean